package parser.prestige.technologia.xml;

import parser.prestige.AbstractNode;
import parser.prestige.IXmlElement;

import javax.xml.stream.XMLEventFactory;
import javax.xml.stream.XMLEventWriter;
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.events.XMLEvent;
import java.util.ArrayList;
import java.util.List;

/**
 * Created with IntelliJ IDEA.
 * User: msi
 * Date: 10.12.13
 * Time: 21:45
 * To change this template use File | Settings | File Templates.
 */
public class Technologia extends AbstractNode implements IXmlElement {
    private String numerWersjiXML = "9";
    private String  nrTechnologii;
    private String kodWydzialu;
    private String nazwaTechnologii;
    private String indeksKartoteki;
    private String indeks;
    private String nazwa;
    private String ilosc;
    private String iloscUzasadnionaTechnologicznie;
    private String czas;
    private String glowna;
    private String przelacznik1;
    private String uwagi;
    private List<OperacjaTech> operacje;

    public Technologia(String numerWersjiXML, String nrTechnologii, String kodWydzialu,String nazwaTechnologii, String indeksKartoteki, String indeks, String nazwa, String ilosc, String iloscUzasadnionaTechnologicznie, String czas, String glowna, String przelacznik1, String uwagi, List<OperacjaTech> operacje) {
        this.numerWersjiXML = numerWersjiXML;
        this.nrTechnologii = nrTechnologii;
        this.kodWydzialu = kodWydzialu;
        this.nazwaTechnologii = nazwaTechnologii;
        this.indeksKartoteki = indeksKartoteki;
        this.indeks = indeks;
        this.nazwa = nazwa;
        this.ilosc = ilosc;
        this.iloscUzasadnionaTechnologicznie = iloscUzasadnionaTechnologicznie;
        this.czas = czas;
        this.glowna = glowna;
        this.przelacznik1 = przelacznik1;
        this.uwagi = uwagi;
        this.operacje = operacje;
    }

    public Technologia() {
        this.numerWersjiXML = "9";
        this.nrTechnologii = "";
        this.kodWydzialu = "";
        this.nazwaTechnologii = "";
        this.indeksKartoteki = "";
        this.indeks = "";
        this.nazwa = "";
        this.ilosc = "";
        this.iloscUzasadnionaTechnologicznie = "";
        this.czas = "";
        this.glowna = "";
        this.przelacznik1 = "";
        this.uwagi = "";
        this.operacje = new ArrayList<OperacjaTech>();
    }

    @Override
    public void createAsNode(XMLEventWriter eventWriter, int tabValue) throws XMLStreamException {
        XMLEventFactory eventFactory = XMLEventFactory.newInstance();
        XMLEvent endLineEvent = eventFactory.createDTD("\n");
        XMLEvent tabulatorEvent = eventFactory.createDTD("\t");

        //TAG: <Technologia>
        addTabs(eventWriter, tabValue);
        eventWriter.add(eventFactory.createStartElement("", "", "Technologia"));
        eventWriter.add(endLineEvent);

        //skladowe Technologia
        addNode(eventWriter, "NumerWersjiXML", numerWersjiXML, tabValue + 1);
        addNode(eventWriter, "NrTechnologii", nrTechnologii, tabValue + 1);
//        addNode(eventWriter, "KodWydzialu", kodWydzialu, tabValue + 1);
        addNode(eventWriter, "NazwaTechnologii", nazwaTechnologii, tabValue + 1);
//        addNode(eventWriter, "IndeksKartoteki", indeksKartoteki, tabValue + 1);
        addNode(eventWriter, "Indeks", indeks, tabValue + 1);
        addNode(eventWriter, "Nazwa", nazwa, tabValue + 1);
        addNode(eventWriter, "Ilosc", ilosc, tabValue + 1);
        addNode(eventWriter, "IloscUzasadnionaTechnologicznie", iloscUzasadnionaTechnologicznie, tabValue + 1);
        addNode(eventWriter, "Czas", czas, tabValue + 1);
        addNode(eventWriter, "Glowna", glowna, tabValue + 1);
        addNode(eventWriter, "Przelacznik1", przelacznik1, tabValue + 1);
        addNode(eventWriter, "Uwagi", uwagi, tabValue + 1);

        for (OperacjaTech operacja : operacje) {
            operacja.createAsNode(eventWriter, tabValue + 1);
        }
        //koniec skladowych Technologia

        //TAG: </Technologia>
        addTabs(eventWriter, tabValue);
        eventWriter.add(eventFactory.createEndElement("", "", "Technologia"));
        eventWriter.add(endLineEvent);
    }

    public String getNumerWersjiXML() {
        return numerWersjiXML;
    }

    public void setNumerWersjiXML(String numerWersjiXML) {
        this.numerWersjiXML = numerWersjiXML;
    }

    public String getNrTechnologii() {
        return nrTechnologii;
    }

    public void setNrTechnologii(String nrTechnologii) {
        this.nrTechnologii = nrTechnologii;
    }

    public String getKodWydzialu() {
        return kodWydzialu;
    }

    public void setKodWydzialu(String kodWydzialu) {
        this.kodWydzialu = kodWydzialu;
    }

    public String getIndeksKartoteki() {
        return indeksKartoteki;
    }

    public void setIndeksKartoteki(String indeksKartoteki) {
        this.indeksKartoteki = indeksKartoteki;
    }

    public String getIndeks() {
        return indeks;
    }

    public void setIndeks(String indeks) {
        this.indeks = indeks;
    }

    public String getNazwa() {
        return nazwa;
    }

    public void setNazwa(String nazwa) {
        this.nazwa = nazwa;
    }

    public String getIlosc() {
        return ilosc;
    }

    public void setIlosc(String ilosc) {
        this.ilosc = ilosc;
    }

    public String getIloscUzasadnionaTechnologicznie() {
        return iloscUzasadnionaTechnologicznie;
    }

    public void setIloscUzasadnionaTechnologicznie(String iloscUzasadnionaTechnologicznie) {
        this.iloscUzasadnionaTechnologicznie = iloscUzasadnionaTechnologicznie;
    }

    public String getCzas() {
        return czas;
    }

    public void setCzas(String czas) {
        this.czas = czas;
    }

    public String getGlowna() {
        return glowna;
    }

    public void setGlowna(String glowna) {
        this.glowna = glowna;
    }

    public String getPrzelacznik1() {
        return przelacznik1;
    }

    public void setPrzelacznik1(String przelacznik1) {
        this.przelacznik1 = przelacznik1;
    }

    public String getUwagi() {
        return uwagi;
    }

    public void setUwagi(String uwagi) {
        this.uwagi = uwagi;
    }

    public List<OperacjaTech> getOperacje() {
        return operacje;
    }

    public void setOperacje(List<OperacjaTech> operacje) {
        this.operacje = operacje;
    }

    public String getNazwaTechnologii() {
        return nazwaTechnologii;
    }

    public void setNazwaTechnologii(String nazwaTechnologii) {
        this.nazwaTechnologii = nazwaTechnologii;
    }
}
